iT邦幫忙

2023 iThome 鐵人賽

DAY 9
1
自我挑戰組

WiFiBoy Python 玩學機介紹系列 第 9

09. Micropython 內建函數與模組簡介

  • 分享至 

  • xImage
  •  

Micropython 簡介

學了好幾天的玩學機操作,大家有沒有覺得裡面內建的 micropython 系統很厲害? Micropython 是怎麼誕生呢?我們來查一下維基百科:

MicroPython是澳大利亞程式設計師和物理學家Damien George,在2013年一次成功的Kickstarter眾籌活動之後最初建立的。儘管最初的Kickstart眾籌活動將MicroPython與基於STM32 F4的pyboard開發板一起發行,MicroPython支援大量的基於ARM CPU 架構的硬體。MicroPython可在於Arduino、ESP8266、ESP32、和物聯網硬體上使用。在2016年,Python軟體基金會建立了MicroPython的BBC Micro Bit版本,作為其BBC Micro Bit合作夥伴貢獻的一部份。

PyBoard

Micropython 的特色:

  1. 以C 語言開發,專門為微控制器設計精簡且高效率的 Python 3 編譯器。
  2. 透過 REPL(Read-Evaluation-Print-Loop) 交互式提示環境,可用於存取和控制微處理器,並馬上執行得到結果,比用C語言開發要更有效率。
  3. 內建函式庫為 Python精簡適用於微處理器版本,程式語法幾乎一樣,程式移植快速
  4. 具有豐富的模組,像是各種感測器的驅動程式、網路工具程式、檔案系統等等。
  5. MicroPython 已有各種嵌入式平台的移植版本,像是 ESP8266、ESP32、STM32、Raspberry Pi Pico 等。大部份的函式庫均能通用,開發者僅需注意跟硬體相關的差異,選用合適模組進行開發。

套件查詢系統

為了要多了解 micropython 的函式庫,您可以在 pypi.org 這個 Python 套件庫中以「micropython」作為關鍵字搜尋。2023年九月初,已經收錄了近 300 個套件。另外在 Github 上也有不少專案與 Micropython 有關。讀者可以先閱讀相關說明,找尋合用的套件與程式碼參考,減少開發時間。

套件查詢

官方文件與範例程式

目前2023年玩學機使用 micropython 1.19 版本。您可以連結至 https://docs.micropython.org/en/v1.19.1/ 閱讀官方文件與查閱相關範例程式。

文件

  • Python 標準函式庫與精簡過的micropython 函式庫
    Array、binascii、builtins、cmath、collections、errno、hashlib、heapq、io、json、math、os、random、re、select、socket、ssl、struct、sys、time、uasyncio、zlib、_thread等。
  • Micropython 特別支援的函式庫
    • network: ESP32 有內建無線網路、藍芽通訊功能,此模組才能正常運作。
    • webrepl: 可透過網頁瀏覽器與設備進行互動、執行指令與上傳下載文件。

內建函數簡介

  1. print(): 與標準 Python 語言中的 print() 函數功能類似,將訊息輸出到終端機上。
  2. input(): 讓使用者可以從終端機輸入資訊的函數。
  3. len(): 傳回一個序列(字串、陣列、串列)的長度值。
  4. type(): 傳回一個物件的類型。
  5. range(): 產生整數數列、常用於迴圈中。
  6. open(): 開啟檔案,讀取或寫入數據。
  7. str()、int()、float(): 將其他資料型態轉換成字串、整數或浮點數。
  8. list(): 建立串列。
  9. dir(): 傳回一個物件的屬性和方法列表。
  10. help(): 提供有關模組、函數或物件的說明文件。

模組功能簡介

模組簡介

  1. machine: 提供與硬體相關的功能,例如控制 GPIO 腳位、SPI、I2C等控制接腳。
  2. network: 用來設定和管理網路連線,包括無線與有線網路。
  3. os: 提供檔案與目錄操作功能,與一些和作業系統有關的設定功能。
  4. utime: 用來處理時間和排程的操作。
  5. ujson: 用來處理 JSON 數據格式的模組。
  6. uio: 用來處理記憶體緩衝區的模組。
  7. math: 提供基本的數學運算模組,像是 sin、sqrt等。
  8. gc: Garbage Collector,資源回收器,主要用在內部記憶體管理。
  9. usocket: 用於處理通訊協定的模組,支援TCP和UDP。
  10. ure: 處理正規表示式的模組,用來處理文件數據剖析。
  11. ustruct: 用於剖析和生成 binary 數據的模組。

設備管理程式範例

估算目前 CPU 的運作頻率

import utime
def performance(n):
    result = 0
    for i in range(n):
        result = result + i
    return	result

def CPU_Freq_cal(n):
    start_time = utime.ticks_us()
    result = performance(n)
    end_time = utime.ticks_us()
    # 計算程式執行時間(微秒)
    execution_time = utime.ticks_diff(end_time, start_time)
    # 預估 CPU 運作速率
    cpu_speed = 1000000 / execution_time
    print("CPU 運算速率約為: ", cpu_speed, "Mhz")

# 實際 CPU 運算頻率
print("實際 CPU 運算頻率: ", machine.freq())
# 測試運算次數造成的效率影響
CPU_Freq_cal(100)
CPU_Freq_cal(1000)
CPU_Freq_cal(10000)
CPU_Freq_cal(100000)

檢查目前記憶體剩餘空間

import gc
free_memory = gc.mem_free()
print("還可使用的記憶體空間為(Bytes):" , free_memory)
print("還有 {0:.2f} K 記憶體可以用。".format(free_memory / 1024))

列出目前目錄中檔案

import os
pwd = os.getcwd()
file_list = os.listdir(pwd)

# 列出文件與子目錄列表:
for item in file_list:
	print(item)

是不是越來越熟悉 MicroPython 的模組呢?明天我們繼續來介紹「用玩學機來算數學」。


上一篇
08. 畫點、畫線、畫圖與秀圖
下一篇
10. 用玩學機來算數學
系列文
WiFiBoy Python 玩學機介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言